<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 skin-theme-clientpref-day vector-sticky-header-enabled" lang="de" dir="ltr"><head>
<meta charset="UTF-8">
<title>MySQL Cluster</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://de.wikipedia.org/wiki/MySQL_Cluster"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link href="./_mw_/ext.gadget.citeRef.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.defaultPlainlinks.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonHide.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonLayout.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonStyle.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiDarkmode.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiResponsive.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.specialSearch.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-MySQL_Cluster rootpage-MySQL_Cluster skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">MySQL Cluster</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="de" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="de" dir="ltr"><p><b>MySQL Cluster</b> ist eine Speicher-Engine des <a href="Freie_Software" title="Freie Software">freien</a> <a href="Datenbanksystem" class="mw-redirect" title="Datenbanksystem">Datenbanksystems</a> <i><a href="MySQL" title="MySQL">MySQL</a></i> in der aktuell verfügbaren Version 7.2. Sie ermöglicht die Installation der Datenbank auf einem <a href="Computercluster" class="mw-redirect" title="Computercluster">Computercluster</a>, der in einer <a href="Shared_Nothing_Architecture" title="Shared Nothing Architecture">Shared Nothing Architecture</a> aufgebaut ist. Das bedeutet, dass jeder Rechner-Knoten seine eigenen Festplatten und Arbeitsspeicher hat. Wenn die einzelnen Rechner-Knoten mit einem genügend großen Arbeitsspeicher ausgestattet sind, dann können alle Daten im Arbeitsspeicher gehalten werden (bis Version 5.0 war das zwingend, ab Version 5.1 gibt es auch plattenresidente Tabellen).
</p><p>Nach eigenen Angaben bietet die Cluster-Technologie von <a href="MySQL" title="MySQL">MySQL</a> eine <a href="Hochverf%C3%BCgbarkeit" title="Hochverfügbarkeit">Verfügbarkeit</a> von 99,9999 %.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> Das bedeutet eine jährliche Ausfallzeit von weniger als sechs Minuten.
</p><p>Die <i>NDB-Speicher-Engine</i> (Network-Database-Speicher-Engine) ist eine unabhängige Komponente, die persistente Speicherung von Daten ermöglicht und für die Koordinierung aller Zugriffe auf Datenknoten in einem MySQL-Cluster zuständig ist. Anwendungen können direkt auf die NDB-Speicher-Engine über verschiedene <a href="NoSQL" title="NoSQL">NoSQL</a>-Schnittstellen oder über einen MySQL-Knoten per SQL zugreifen.
</p><p><i>NDB Cluster</i> wurde 2003 von <a href="MySQL_AB" title="MySQL AB">MySQL AB</a> mit Erwerb des Unternehmens Alzato (einem Ericsson-Ableger) übernommen. 2008 wurde MySQL AB von <a href="Sun_Microsystems" title="Sun Microsystems">Sun Microsystems</a> übernommen. 2010 wiederum wurde Sun von Oracle übernommen.
</p>
<div class="mw-heading mw-heading2"><h2 id="Einsatzgebiete">Einsatzgebiete</h2></div>
<p>MySQL Cluster wird oft als DBMS (Database Management System) im Web-Umfeld eingesetzt, wo es darauf ankommt, viele Lesezugriffe in Kombination mit einer hohen Ausfallsicherheit zu erreichen. Für solche Anforderungen hat MySQL Cluster bei Tests schon bessere Zugriffszeiten bewiesen als Oracle, DB2 und MS SQL.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Architektur">Architektur</h2></div>
<p>Im MySQL Cluster werden drei Arten von Knoten unterschieden:<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup>
</p>
<dl><dt>Datenknoten (Ndbd)</dt>
<dd>Datenknoten speichern alle zu MySQL Cluster gehörenden Daten. Die Daten werden im Normalfall zwischen den Datenknoten des Clusters <a href="Replikation_(Datenverarbeitung)" title="Replikation (Datenverarbeitung)">repliziert</a>, um sicherzustellen, dass diese bei Ausfall eines oder mehrerer Knoten ununterbrochen verfügbar sind. Datenknoten verwalten außerdem <a href="Transaktion_(Informatik)" title="Transaktion (Informatik)">Datenbanktransaktionen</a>. Bei mehr als zwei Datenknoten werden die Knoten in sogenannte <i>Nodegroups</i> (Knotengruppen) unterteilt. Eine Nodegroup muss aus mindestens zwei Datenknoten bestehen. Innerhalb einer Nodegroup werden die Daten repliziert. Beim Einfügen eines neuen Satzes bildet das System einen Hash aus dem Primärschlüssel (die NDB-Engine erzeugt automatisch einen Primärschlüssel, falls keiner definiert ist). Der Wert des Hashs bestimmt, in welcher Nodegroup der Satz abgelegt wird. Dadurch wird eine statistische Gleichverteilung erreicht. Diese Methode der Datenverteilung wird auch als <i>Partitionierung</i> bezeichnet.
<ul><li>Datenspeicherung: Bis Version 5 wurden alle Daten im Hauptspeicher gehalten und periodisch auf die Platte geschrieben. Grob gesprochen hieß dies, dass die Datenknoten insgesamt soviel Hauptspeicher haben mussten, wie die Größe der Datenbank betrug; das mitgelieferte Skript „ndb_size.pl“ erlaubte es, den voraussichtlichen Speicherbedarf für eine existierende Datenbank abzuschätzen. Ab Version 6 gibt es den Tabellentyp „storage disk“, bei dem Indexfelder im Hauptspeicher und die restlichen Felder auf der Platte gespeichert werden.</li>
<li>Rollen: Genau ein Ndb-Knoten im Cluster ist der <b>Master</b>. Diese Rolle wird beim Start vom Arbitrator zugeteilt. Der Master hat die primäre Information über den Zustand des Clusters. Ohne Master ist der Cluster arbeitsunfähig. Bei Ausfall kann ein anderer Knoten diese Rolle übernehmen – allerdings nur mit Zustimmung des Arbitrators oder der absoluten Mehrheit der Ndb-Knoten. Falls Teile des Clusters ihre Verbindung verlieren, aber noch arbeitsfähig sind (<a href="Split_Brain_(Informatik)" title="Split Brain (Informatik)">split brain scenario</a>), entscheidet der <b>Arbitrator</b> (Schiedsrichter), wer Master sein soll. Per Default ist der Manager der Arbitrator; es ist aber möglich, eine Hierarchie zu konfigurieren; dabei wird oft eine ungerade Zahl gewählt, um die Mehrheitsfähigkeit zu erhalten. Als Arbitrator können Management- oder SQL-Knoten dienen.</li></ul></dd></dl>
<dl><dt>Managementknoten</dt>
<dd>Ein Managementknoten ist für die Systemkonfiguration, die Knotenverwaltung und die Aufzeichnung der Aktivitäten im Cluster zuständig. Es können ein oder mehrere Managementknoten aus Verfügbarkeitsgründen gleichzeitig eingesetzt werden. Im laufenden Betrieb wird dieser Knoten nur benötigt, wenn sich ein ausgefallener anderer Knoten wieder am Cluster anmelden will. Wenn der Managementknoten zusätzlich Arbitrator (Default) ist, muss er auch verfügbar sein, wenn der Master ausfällt. Da Ausfälle nicht vorhersehbar sind, sollte dieser Knoten daher immer laufen.</dd>
<dt>SQL-Knoten</dt>
<dd>Ein SQL-Knoten entspricht einem MySQL-Datenbanksystem, das mit Datenknoten kommunizieren kann. Die SQL-Knoten können einzeln oder über <a href="Lastverteilung_(Informatik)" title="Lastverteilung (Informatik)">Lastverteilung</a> unter einer Sammel-IP angesprochen werden.</dd></dl>
<p>Das MySQL-Datenbanksystem erlaubt die Verwendung von Datenbank-Managementsystemen mit verschiedenen Konzepten: mit und ohne Durchführung von Transaktionen, mit und ohne persistenter Speicherung, mit und ohne den Einsatz von gespeicherten Prozeduren, mit synchroner oder asynchroner Replikation usw.
</p><p>Der grobe Ablauf einer Benutzeranfrage ist wie folgt:
</p>
<ol><li>Eine Anfrage wird an einen SQL-Knoten gestellt.</li>
<li>Der SQL-Knoten leitet die Anfragen an die Datenknoten weiter.</li>
<li>Ein Datenknoten verarbeitet die Anfrage und sendet das Ergebnis an den SQL-Knoten zurück.</li>
<li>Der SQL-Knoten übergibt das Ergebnis an das anfragende Objekt.</li></ol>
<p>Auf jedem der Knoten des MySQL Clusters ist mindestens ein Prozess gestartet. Bei SQL-Knoten heißt der zuständige Prozess <i>mysqld</i>, bei Datenknoten <i>ndbd</i> und bei Verwaltungsknoten <i>ndb-mgmd</i>. Auf Rechnerknoten mit mehreren Prozessoren können mehrere MySQL Cluster-Prozesse gleichzeitig laufen. Beispielsweise auf einem Datenknoten mit zwei CPUs können zwei ndbd-Prozesse parallel ausgeführt werden. Es ist ebenfalls möglich, Prozesse verschiedener MySQL Cluster-Knotentypen auf einem Rechnerknoten mit mehreren CPUs einzusetzen. Zum Beispiel kann auf einem Rechner ein Prozess des SQL-Knotens (mysqld) und ein Prozess des Datenknotens (ndbd) gestartet sein.
</p><p><i>Ports</i> (Voreinstellungen):
</p>
<dl><dt>Sql-Knoten</dt>
<dd>3306</dd>
<dt>Manager</dt>
<dd>1186</dd>
<dt>Ndbd-Knoten</dt>
<dd>verwenden keine festen Ports. Die Ports werden vom Manager beim Start des Clusters dynamisch vergeben und an die Server im Cluster propagiert.</dd></dl>
<p><i>Sicherheit</i>:
Der Datenverkehr innerhalb des Clusters ist nicht kryptographisch abgesichert. Es ist Verantwortung des Betreibers, den Cluster abzuschirmen, z. B. durch Firewallregeln oder ein eigenes Tunnelnetz.
</p>
<div class="mw-heading mw-heading2"><h2 id="Plattformen">Plattformen</h2></div>
<p>MySQL unterstützt Windows, Unix/Linux. Eine Mac Version steht für die Entwicklung zur Verfügung.
</p>
<div class="mw-heading mw-heading2"><h2 id="Einzelnachweise">Einzelnachweise</h2></div>
<ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.mysql.de/products/database/cluster/">MySQL-Website</a></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text"><cite style="font-style:italic">Computerwoche</cite>. <span style="white-space:nowrap">Nr.<span style="display:inline-block;width:.2em"> </span>45</span>, 2006, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em"> </span>24</span>.<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:MySQL+Cluster&rft.btitle=Computerwoche&rft.date=2006&rft.genre=book&rft.issue=45&rft.pages=24" style="display:none"> </span></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><a href="#cite_ref-3">↑</a></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r261891140">
/* start https://de.wikipedia.org/ */
.mw-parser-output .webarchiv-memento a{color:inherit}
/* end https://de.wikipedia.org/ */
</style><a rel="nofollow" class="external text" href="https://web.archive.org/web/20120714074522/http://www.computerwoche.de/heftarchiv/2006/45/1216635/"><i>MySQL-Zeichen stehen auf Enterprise</i></a> (<span class="webarchiv-memento"><a href="Webarchivierung#Begrifflichkeiten" title="Webarchivierung">Memento</a></span> des <style data-mw-deduplicate="TemplateStyles:r250917974">
/* start https://de.wikipedia.org/ */
.mw-parser-output .dewiki-iconexternal>a{background-position:center right!important;background-repeat:no-repeat!important}body.skin-minerva .mw-parser-output .dewiki-iconexternal>a{background-image:url("./_mw_/OOjs_UI_icon_external-link-ltr-progressive.svg")!important;background-size:10px!important;padding-right:13px!important}body.skin-timeless .mw-parser-output .dewiki-iconexternal>a,body.skin-monobook .mw-parser-output .dewiki-iconexternal>a{background-image:url("./_mw_/MediaWiki_external_link_icon.svg")!important;padding-right:13px!important}body.skin-vector .mw-parser-output .dewiki-iconexternal>a{background-image:url("./_mw_/Link.ernal-small-ltr-progressive.svg")!important;background-size:0.857em!important;padding-right:1em!important}
/* end https://de.wikipedia.org/ */
</style><span class="dewiki-iconexternal"><a class="external text" href="https://redirecter.toolforge.org/?url=http%3A%2F%2Fwww.computerwoche.de%2Fheftarchiv%2F2006%2F45%2F1216635%2F">Originals</a></span> vom 14. Juli 2012 im <i><a href="Internet_Archive" title="Internet Archive">Internet Archive</a></i>) <small class="archiv-bot"><span class="wp_boppel noviewer" aria-hidden="true" role="presentation"><span typeof="mw:File"><span title="i"></span></span></span> <b>Info:</b> Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.</small><span style="display:none"><a rel="nofollow" class="external text" href="http://IABotmemento.invalid/http://www.computerwoche.de/heftarchiv/2006/45/1216635/">@1</a></span><span style="display:none"><a rel="nofollow" class="external text" href="http://www.computerwoche.de/heftarchiv/2006/45/1216635/">@2</a></span><span style="display:none">Vorlage:Webachiv/IABot/www.computerwoche.de</span>, Computerwoche 45/2006</span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><a href="#cite_ref-4">↑</a></span> <span class="reference-text">Larissa Janssen: <cite style="font-style:italic">Hochleistungs-Datenbanksysteme: Theorie und Praxis</cite>. Books on Demand GmbH, 2008, ISBN 3-8334-9326-7, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em"> </span>188–189</span>.<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:MySQL+Cluster&rft.au=Larissa+Janssen&rft.btitle=Hochleistungs-Datenbanksysteme%3A+Theorie+und+Praxis&rft.date=2008&rft.genre=book&rft.isbn=3833493267&rft.pages=188-189&rft.pub=Books+on+Demand+GmbH" style="display:none"> </span></span>
</li>
</ol></div><!--htdig_noindex--><div><div class="zim-footer">
Dieser Artikel wurde von <a class="external text" title="Zuletzt bearbeitet am 2019-05-02" href="https://de.wikipedia.org/wiki/?title=MySQL_Cluster&oldid=188150433">Wikipedia</a> herausgegeben. Der Text ist unter <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de">Creative Commons Attribution-Share Alike 4.0</a> verfügbar, sofern nicht anders angegeben. Für die Mediendateien können zusätzliche Bedingungen gelten.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>
</body></html>